rnMac  1.3b4
                            written by Roy Wood
                     cool icons by Ernst “Pooh” Mulder

                               rrwood@io.org
                    Roy_R._Wood@magic-bbs.corp.apple.com

                       ©1993 Silicon Angst Software
                           7 Heyworth Crescent
                        Toronto, Ontario, CANADA
                                 M4E 1T6
                             (416) 694-5927

rnMac is shareware, so if you use it, send $25 to me at the address listed above (please make out cheques to me, Roy Wood).  You know that UUPC/ ToadNews/ rnMac together will cost you a LOT less than uAccess, so support the authors of these fine shareware products, or there won't be any fine shareware products anymore....

I've been told that Eudora is now compatible with UUPC, so you might like to look at it if you're looking for a mail interface.  Many people swear by it, but I've not tried it yet.  Also, you might consider FernMail by Dave Platt or LeeMail by Lee Fyock....

And if you've got MacTCP and access to an NNTP server, check out MacSlurp!  It grabs news from the NNTP server for offline reading later....

rnMac is a offline newsreader/mailer for Macintosh computers.  If you don't know what Usenet news is, you probably don't have much need for this program.  Contrary to what the name implies, this is not a port of “rn” or any similarly-named newsreader.

There are a number of newsreaders available for the Mac, though most are intended for use with Mac TCP/IP and an NNTP news server (I think NewsWatcher can be used in demo mode to read from a local hard drive, and TheNews is now usable in a uucp context, too).  rnMac is intended for use on stand-alone Macs that get their newsfeed via something like UUPC and ToadNews.  rnMac doesn't know anything about modems, uucp, unbatching, or expiring; all it knows how to do is to read articles from a folder on your hard drive.

There's really not much to be explained about the use of rnMac.  Once you get your newsfeed working, you should be set to read news.  The only thing to fiddle with is the "rnMac SETTINGS" file— it should contain the following 'STR ' named resources, which you should set appropriately for your machine (use the “Edit rnMac Settings” option under the Edit menu to do this, or just use ResEdit).  Most of these are the same as the 'STR ' resources UUPC, Fernmail, and ToadNews use, so you're probably going to get good at setting these things.   With luck, these redundant resources will be centralized someday....

"NEWSFOLDER" - the FULL OR PARTIAL PATHNAME to the news folder on your hard drive, e.g. "MacintoshHD:UUPC:News" or just ":News"

"MAILDIR" -  the FULL OR PARTIAL PATHNAME to the mail folder on your hard drive, e.g. "MacintoshHD:UUPC:Mail" or just ":Mail"

"USERNAME" - your user-id, e.g. "rrwood"

"DEFAULT FONT" and "DEFAULT FONT SIZE" - the default font/size for text windows, e.g. "Courier" and "10".  This can be altered via a menu from within the program.

"NODENAME" - the name of your uucp node, e.g. "io"

"SEQUENCEFILE" - the name of the sequence file used by UUPC, e.g. "SEQF"

"CONFDIR" - the UUPC configuration directory, e.g. "MacintoshHD:UUPC:Config" or just ":Config"

"MAILSERVICE" - the name of your primary uucp neighbour node, e.g. "uuisis"

"SPOOLDIR" - the name of the UUPC spool directory, e.g. "MacintoshHD:UUPC:Spool" or ":Spool"

"DOMAIN" - your full uucp domain name, e.g. "io.org"

"TIMEDIFF" - your time difference, e.g. -0800 (PST)

"MAXMAILSIZE" - the maximum size (in bytes) of outgoing messages; mail larger than this size is split into multiple messages.  e.g. 30000

"MAXLINEWIDTH" - the maximum width in columns after which lines will be split (this is applied as the outgoing mail/article is spooled), e.g. 75

"SIGFILE" - name of a signature file which is automatically included at the end of the outgoing mail or news article

"ARTICLESFOLDER" - folder where saved articles will be stored by default

"REALNAME" - your name as you wish it to be displayed in the From: header line of your outgoing mail or news; e.g. “Roy Wood”

"ORGANIZATION" - user-specified value for the Organization: header line

"DISTRIBUTION" - user-specified value for the Distribution: header line

"REPLYTO" - user-specified value for the Reply-To: header line

"SHOWHEADER" - YES/NO to show article headers

"WRAPTEXT" - YES/NO to wrap text of displayed articles (only displayed articles; outgoing articles and mail are split according to MAXLINEWIDTH upon spooling)

"CUSTOMNEWSHEADER" - name of custom news header file (see below for more info)

"CUSTOMMAILHEADER" - name of custom mail header file (see below for more info)

"SAVEMAILFILENAME" - name of file to which a copy outgoing mail should be appended

"THREADPAUSE" - the number of ticks that rnMac should pause between attempting to thread all groups listed in the newsrc

"THREADLOG" - verbose/terse control for information displayed in thread log window

"SPOOLLOCAL" - yes/no flag to indicate whether to spool a copy of an outgoing article so that ToadNews will find and post it to the local system

"TEXTCREATOR" - a 4-character sequence that defines the creator signature assigned to textfiles created by rnMac; e.g. «rn», KAHL, MSWD

"TEXTTYPE" - a 4-character sequence that defines the type signature assigned to textfiles created by rnMac; e.g. TEXT, ????, WDBN

"SAVEASSUBJ" - YES/NO to set default 'Save As Textfile' filename to subject of article or the name of the group

"DEFAULT WINDOWRECT" — the default window size, specified as left  top  right  bottom  splitLocation; e.g. “25  30  500 300 70” would specify the default window to have its top left corner at (25,5), its bottom right corner at (500,300) and the offset of the split pane marker as 70 (40 pixels below the top of the window)

"SHOWREHEADERS" — YES/NO to show repeated headers in article list pane

"QUOTESTRING" — the string of characters used to indent quoted text when replying to news/mail or when using the indented paste command under the Edit menu

"DOBLOCKPROCING" — YES/NO to do threading in blocks (i.e. write all header info at once, rather than incrementally in the background, keep/discard all old headers at once, etc.)

"SAVEARTWINDPOS" — YES/NO to save window positions for each individual newsgroup

"NEWSRCNAME" — the name of the file in which the newsrc info is stored (i.e. currently subscribed groups and the read article numbers for each group); this is useful when more than one person is using the same copy of rnMac and you have multiple settings files)

"USETEXTEDIT" — YES/NO to use TextEdit, rather than TE32K (the former limits you to editing text records smaller than 32K in size, though it may allow support for WorldScript....)

"TRUNCATEUUCPNAME" — YES/NO to truncate the uucp name to six or fewer characters (this is required by older implementations of uucp)

"BACKGROUNDRGB" — the red/green/blue colour settings for the background colour of the newsrc, articles, mail, outgoing mail, outgoing article windows (the other windows are just white-backgrounded since they are used so little)

"DOHZ2GBAUTO" — YES/NO to perform HZ —> GB conversion of subject lines and articles (HZ and GB are different forms of representing Chinese text, such as the postings to alt.chinese.talk)

Aside from setting up the "rnMac SETTINGS" file, this program is pretty much just plug-and-play.  The menus are pretty easy to understand, and it works about the way you'd expect it to.  Just double-click everything in sight and you should be fine.

To subscribe to groups, choose "Show All Newsgroups" under the Groups menu, double-click on the group you're interested in, and then choose "Subscribe" from the Groups menu.  When you subscribe to a group, it is not automatically opened, though you can modify this if you hold down the option key as you double-click.  Subscribing to a group simply adds its name and some other information to the newsrc file.  (The newsrc file is pretty much identical to its Unix counterpart, and can be edited with any text editor.)  Lots of people have suggested allowing shift-clicking to select multiple groups for subscribing, but it's so easy to quickly option-click a bunch of groups that I'm not going to bother.

If you wish to remove a group from your newsrc, click once on it in the "Subscribed Groups" window (it will be highlighted), and then choose "Unsubscribe" from the Newsgroups menu.  You can also shift-click to select multiple groups to unsubscribe.

The "Articles" menu allows you to do a lot of useful things within a group window (e.g. kill subjects, list all subjects, follow a subject thread, etc.).  If you are playing around with the status of articles, you will notice that they are flagged with a check to indicate that they are marked as read in your newsrc file.  You can also option-click an article's header to toggle its read/unread status.  You can also shift-click to select multiple article subjects.

The "Text" menu is primarily used to set the default font/size of text by altering the "DEFAULT FONT" and "DEFAULT FONT SIZE" resources in the "rnMac SETTINGS" file.  By default, the font and size of text in all windows is affected, though this can be overridden.  In order to change the font/size for just the front window (and not the defaults!), hold down the option key as you make your menu selection.   Via a stroke of serendipity, rnMac allows the text in every window to appear in a different font/size, though I can't imagine why anyone would want to do so (maybe rec.humor.funny in San Francisco?).  And yes, rnMac even remembers fonts/sizes between sessions!  (use ResEdit to discover the secret undocumented 'STR ' resources....)

rnMac does an acceptable job of acting as a mail-reader, too.  You can read and send mail, and even do some nice things like save and edit messages as standard Mac text files.  You will be delighted to note that you can now edit files larger than 32K in size!  (Boy, was that a nuisance to get working.)  To use this feature, you should turn off the use of TextEdit (there's an option under the Edit menu).

The aliasing features available via the "Send Mail To:" menu option allow you to define new aliases, edit or delete old aliases, or just send mail to an aliased address.  The catch is that the alias is expanded into the full address when the outgoing mail window is created, so you can't really add names to the "To:" or other header lines.  However, you can define an alias to include multiple target addresses (e.g. define alias "friends" as "rrwood@io.org, jpmah@descartes.uwaterloo.ca").  Note that aliases are NOT expanded recursively, so you can't define "roy" as "rrwood@io.org" and "john" as "jpmah@descartes.uwaterloo.ca", and then define "friends" as "roy john".  The "rnMac Aliases" file is just a textfile, so you can edit it manually, or use rnMac to make changes.

rnMac will split outgoing mail (not articles....yet) into smaller pieces whose size is dictated by the MAXMAILSIZE setting.  Note that this size restriction is approximate at best, and does not account for the mail header!

The mailbox routines are smart enough to automatically recognize the presence of new mail.  As for new articles, well they are shown once the background threading is updated (i.e. if ToadNews is running in the background and it unbatches a new article for the group you are reading, then the thread file for that group has to be updated before the new article is listed in the open window; conversely, if you open a new group for which the thread file is out of date, the ToadNews 'SUBJ' resources will be used and all articles will be shown).  And yes, this background threading is kind of kludgy, but John Mah says he'll do some magic with ToadNews that should improve things.

For those of you who insist on creating custom headers for your mail/news, that capability has been added.  Add and set the "CUSTOMMAILHEADER" or "CUSTOMNEWSHEADER" setting to the name of your custom header file, and rnMac will use your header.  Of course, for this to be really useful, you will probably want to use some of the following macros in your header (the names are fairly self-explanatory): NODENAME, MAILSERVICE, DOMAIN, TIMEDIFF, USERNAME, REALNAME, DISTRIBUTION, ORGANIZATION, REPLYTO, GROUPNAME, TOADDRESS, SUBJECT, REFERENCES, TICKTIME, DAYNUM, MONTHNUM, DAYNAME, MONTHNAME, HOUR, MINUTE, SECOND, YEAR, TWODIGITYEAR, SEQFNUM.  To invoke a macro in your header, just use a percent symbol (%) followed by the macro name in capitals.  When rnMac reads in your header file, it replaces the macro with the appropriate string; e.g. "%REALNAME" would be replaced by "Roy Wood" on my machine.  As you may have guessed, if you want to place a percent symbol in your header, just type it twice, e.g. "%%".  The end of the header, as recognized by rnMac, is the first empty line in the message (i.e. the first line consisting solely of a carriage return).

If you're having trouble with custom headers, take a look at the default header lines, and read RFC-822, RFC-1036, and RFC-976 (stop complaining — if you want to do fancy stuff, you have to be prepared to put in a little effort).  Note that rnMac does not modify custom headers in any way when they are spooled, so what you see in the edit window is what will be used as the message header!

I'm still working on improving rnMac, so drop me a note with your suggestions for improvement.  Currently, I can be reached as “Roy_R._Wood@magic-bbs.corp.apple.com” or “rrwood@io.org”.  If you're interested, I'm planning to make rnMac compatible with LocalTalk NNTP servers, which will make things simple for anyone wishing to provide news/mail on a LocalTalk network.  Right now you can do this by setting up a file-server (or shared volume with system 7) with the news files on it, and then just fiddle with the SETTINGS file to point to the server.  Things will work best if you leave a copy of rnMac running on the server (it will keep the thread files up-to-date on the server) and make sure that your Mac has a hefty disk cache (e.g. my wife's PB140 will process about 500 articles per minute with a 256K cache; results without a big cache are abysmal (think about what the Mac HFS is doing to keep track of those folders with 1000+ article files in them!)).

Version History:

June 16 - v 1.3b4
- fixed bad dereference of Handle in threader code (this caused nasty crashes during threading)
- fixed long vs unsigned long problems in threader code
- added GB2HZ processing for From: author names
- added better internal safeguards to catch and correct bad newsrc's
- added code to reject font sizes less than zero
- fixed custom header code

June 12 — v1.3b3
- changed font of this help text to Courier, which I hope everyone has installed
- fixed call to ObscureCursor() after keystrokes
- added support for "Open Document" Apple Events, so double-clicking on a settings file now works under System 7 again
- fixed the bug in the newsrc code that was responsible for trashing the lists of read articles (for those interested, the problem was due to a long vs unsigned long article number when doing comparisons; after testing 100,000 mark as read/mark as unread operations, I'm reasonably confident that things are solid now)
- fixed a really wicked bug with the default font size and font menu that occasionally set the font size to -1, which lead TextEdit to believe that it was dealing with a styled edit record, rather than a standard edit record (let's hope this makes John Delacour's life easier)

June 1 - v1.3b2
- fixed problem with loading sigfile when posting an article (thanks Ernst!)
- added Subject/Date threading feature (works fast and sort of well)
- enabled Edit menu choices (Cut/Copy/Clear) after shift-arrowkey selection of text
- when saving articles, rnMac now checks to see if the file exists, and gives the user the option to append or overwrite the file when appropriate
- added NEWSRCNAME setting and multi-user capabilities
- added code to recognize open documents, so you can double-click on a settings file to launch rnMac
- fixed problem with rmail command for headers like “To: rrwood@io.org (Roy Wood)” or “To: Roy Wood <rrwood@io.org>” (according to RFC 1036, those are the only legal forms that caused problems)
- fixed up the “Save As Textfile” code for saving multiple articles
- when saving textfiles and using the article subject as the filename, colons are now translated to spaces, so as not to confuse the file manager
- the system part of the filenames of spooled UUCP files are now truncated to 6 or fewer characters, so as not to confuse older (traditional?) UUCP implementations; let's hope this doesn't upset MacSlurp
- support for multiple monitors has been implemented, I think (can someone test this for and let me know if it works, please?)
- help screen is now non-modal
- settings editing screen is now non-modal
- better tolerance for missing settings implemented (uses defaults in application resource fork, making it easier to update old settings files now)
- text font/size menu now works correctly
- added support for "USETEXTEDIT" setting, which may provide support for WorldScript (can someone let me know if they can get a non-english system such as Chinese or German to work?)
- added ISO-8859 translation using A. Pirard's 'taBL' resource tables
- added support for "TRUNCATEUUCPNAME" setting
- if an original article has been deleted and the alias is then opened, that article is now marked as read, and hilighting of the article header in the list is correctly handled
- "Save Newsrc" menu option is back
- pasting in the registration dialog is enabled
- added support for "BACKGROUNDRGB" setting and setting the background colour via the colour picker on machines with colour QuickDraw
- fixed WRAPTEXT handling in TextEdit mode (remember this only affects displayed articles, not outgoing news/mail)
- added GB <—> HZ conversion code for Chinese text (I hope it works!)
- added support for DOHZ2GBAUTO setting
- added silly little emoticons menu for pasting into outgoing mail/news; to customize the available items, use ResEdit or Resourcerer....
- added support for required Apple Events (Open Application, Open Document, Print, Quit) and ToadNews "thread all newsgroups" events, so rnMac now functions correctly as a ToadNews-invocable threader (i.e. when it receives the appropriate Apple Event from ToadNews, it threads all newsgroups and then quits)